New features with this release, as extensions of the Apache functionality. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that recent Apache versions are pickier about - please check the compatibility notes if you have any problems.
In addition to a number of bug fixes and internal performance enhancements, Apache 1.3 has the following specific new user features:
Configuration
file, and the
CheckSpelling
directive must be set to on
.
Configuration
have been replaced with "AddModule" with a slightly different syntax.
For module authors there are some changes designed to make it
easier for users to add their module.
mod_mime_magic
, has been
added. It uses "magic numbers" and other hints from a file's contents
to figure out what the contents are. It then uses this information to
set the file's media type, if it cannot be determined by the file's
extension.
mod_dir
module has been split in two, with
mod_dir handling directory index
files, and mod_autoindex
creating directory listings. Thus allowing folks to remove
the indexing function from critical servers.
mod_proxy
's outgoing connections
larger network buffers, for increased throughput.
writev
(where available)
to issue multiple writes with a single system call. They also avoid
copying memory into buffers as much as possible. The result is
less CPU time spent on transferring large files.
mmap
, which means bytes are only copied from the
disk buffer to the network buffer directly by the kernel. The
program never copies bytes around, which reduces CPU time.
(Only where available/tested.)
mod_log_config
can be compile-time configured to buffer writes.
See the new performance documentation for more information.
UNIQUE_ID
.
Host:
header from the client.
Previously this address was implicitly the same as the "main address"
of the machine, and this caused no end of problems for users, and
was not powerful enough.
Please see the Apache Virtual Host
documentation for further details on configuration.
child_init
function for module APIchild_exit
function for module APIchild_init
and
child_exit
functions are passed a pool whose lifetime is
the same as the lifetime of the child (modulo completely fatal
events in which apache has no hope of recovering). In contrast,
the module init
function is passed a pool whose lifetime
ends when the parent exits or restarts.
child_terminate
register_other_child
http_main.h
. This is used in the parent to register
a child for monitoring. The parent will report status to a supplied
callback function. This allows modules to create their own children
which are monitored along with the httpd children.
piped_log
http_log.h
. This API provides the common code for
implementing piped logs. In particular it implements a reliable piped
log on architectures supporting it (i.e., Unix at the moment).
ap_*
set_last_modified
split into threeset_last_modified
performed multiple
jobs including the setting of the Last-Modified
header, the
ETag
header, and processing conditional requests (such as
IMS). These functions have been split into three functions:
set_last_modified
, set_etag
, and
meets_conditions
. The field mtime
has been
added to request_rec
to facilitate
meets_conditions
.
aplog_error
aplog_error
.
This is still a work in progress.
set_file_slot
for config parsingset_file_slot
routine provides a standard routine that
prepends ServerRoot to non-absolute paths.
post_read_request
module APIpsocket
, and popendir
psocket
and pclosesocket
functions allow
for race-condition free socket creation with resource tracking.
Similarly popendir
and pclosedir
protect
directory reading.
is_initial_req
kill_only_once
spawn_child
functions which prevents Apache
from aggressively trying to kill off the child.
alloc debugging code
ALLOC_DEBUG
provides a rudimentary memory
debugger which can be used on live servers with low impact --
it sets all allocated and freed memory bytes to 0xa5. Defining
ALLOC_USE_MALLOC
will cause the alloc code to use
malloc()
and free()
for each object. This
is far more expensive and should only be used for testing with tools
such as Electric Fence and Purify. See main/alloc.c
for more details.